home *** CD-ROM | disk | FTP | other *** search
/ Ray Dream Studio 5 / Ray Dream.iso / pc / DreamSDK / Windows / INCLUDES / I3DSHORN.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-11  |  7.1 KB  |  142 lines

  1. /* $Id: I3DSHOrn.H 1.2 1995/09/11 01:12:51 YannPC Exp $ */
  2. /*****************************************************************************\
  3. *                                                                             *
  4. * I3DShORn.h                                                                                *
  5. *   I3DShObjectRender definition                                              *
  6. *   I3DShSceneRender definition                                               *
  7. *                                                                             *
  8. *           Copyright (c) 1995, Ray Dream, Inc. All rights reserved.          *
  9. *                                                                             *
  10. \*****************************************************************************/
  11.  
  12. #ifndef __I3DSHORN__
  13. #define __I3DSHORN__
  14.  
  15. #ifndef __I3DSHOBJ__
  16. #include "I3DShObj.h"
  17. #endif
  18.  
  19. #ifndef __I3DSHSCN__
  20. #include "I3DShScn.h"
  21. #endif
  22.  
  23.  
  24. //****** Globally Unique Ids **************************************************
  25.  
  26. DEFINE_GUID(IID_I3DShObjectRender, 0xCFEA9020L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  27. DEFINE_GUID(IID_I3DShSceneRender, 0xD19755C0L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  28.  
  29. DEFINE_GUID(CLSID_StandardObjectRender, 0xD35AFEC0L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  30.  
  31.  
  32. struct I3DShObjectRender;
  33. class I3DShLineArt;
  34. struct ZBInfo;
  35. struct BOX3D_2;
  36.  
  37. /*****************************************************************************\
  38. *  I3DShEnumSubPrimitive                                                      *
  39. *                                                                             *
  40. *    Sub primitive enumrator, used in I3DShObjectRender::GetSubPrimitivesEnum() *
  41. *                                                                             *
  42. \*****************************************************************************/
  43.  
  44. #undef  INTERFACE
  45. #define INTERFACE   I3DShEnumSubPrimitive
  46.  
  47. DECLARE_INTERFACE_(I3DShEnumSubPrimitive, IUnknown) {
  48.     // IUnknown methods
  49.   STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  50.   STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  51.   STDMETHOD_(ULONG, Release) (THIS) PURE;
  52.     
  53.     // I3DShEnumSubPrimitive methods
  54.   STDMETHOD(Next) (THIS_ ULONG celt, I3DShObjectRender** rgelt, TREETRANSFORM3D* treeTransform, I3DShInstance* instance, ULONG* pceltFetched) PURE;
  55.   STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  56.   STDMETHOD(Reset) (THIS) PURE;
  57.   STDMETHOD(Clone) (THIS_ I3DShEnumSubPrimitive** ppenm) PURE;
  58.     };
  59.  
  60. /*****************************************************************************\
  61. *  I3DShObjectRender                                                          *
  62. *                                                                             *
  63. *    I3DShObjectRender provides services that used only by renderers.         *
  64. *    This interface will always be return by I3DShObject::QueryInterface()    *
  65. *    on 3D shells that are designed to support renderers.                     *
  66. *    External primitives that do not have anything special to do can simply   *
  67. *    instanciate a standard ObjectRender object by using                      *
  68. *      CLSID_StandardObjectRender.                                              *
  69. *                                                                             *
  70. \*****************************************************************************/
  71.  
  72. #undef  INTERFACE
  73. #define INTERFACE   I3DShObjectRender
  74.  
  75. DECLARE_INTERFACE_(I3DShObjectRender, IUnknown) {
  76.     // IUnknown methods
  77.   STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  78.   STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  79.   STDMETHOD_(ULONG, Release) (THIS) PURE;
  80.  
  81.     // I3DShObjectRender methods
  82.     //-- Geometry calls
  83.     STDMETHOD_(BOOLEAN, IsPatchBased) (THIS) PURE;
  84.     STDMETHOD(EnumPatches) (THIS_ EnumPatchesCallback callback, void* privData) PURE;
  85.     STDMETHOD(EnumFacets) (THIS_ EnumFacetsCallback callback, void* privData, NUM3D fidelity) PURE;
  86.     STDMETHOD(PrimitiveModified) (THIS_ short how) PURE;
  87.     STDMETHOD_(I3DShEnumSubPrimitive*, GetSubPrimitivesEnum) (THIS) PURE;        // Get list of subprimitives
  88.     STDMETHOD(GetFlatness) (THIS_ NUM3D* flatness) PURE;
  89.     //-- Rendering calls
  90.     STDMETHOD(Draw) (THIS_ ZBInfo* zbInfo, ULONG uvSpaceID) PURE;        // Z-Buffer / Scanline
  91.     STDMETHOD(WireframeDraw) (THIS_ I3DShLineArt* aLineArt, TREETRANSFORM3D* treeTransform, I3DShCamera* camera, BOX2D* drawArea, short mode) PURE;        // Wireframe
  92.     STDMETHOD_(BOOLEAN, RayHit) (THIS_ Ray3D* ray, RayHitParams* params, RayHit3D* hit) PURE;
  93.     STDMETHOD(GetRayHitDetails) (THIS_ RayHit3D* hit, ULONG* uvSpaceID) PURE;
  94.     STDMETHOD(RayAllHits) (THIS_ Ray3D* ray, RayHitParams* params, RayHit3D* hit, RayHitCallback callback, void* privData) PURE;        // Optional - Return E_NOTIMPL if not implemented
  95.     //-- Utils.
  96.     STDMETHOD(GetBoxes) (THIS_ ZBInfo* zbInfo, NUM3D* resultMinZ, NUM3D* resultMaxZ, BOX3D_2* resultBox2D, BOX3D* resultBox3D) PURE;
  97.     STDMETHOD(GetBBox) (THIS_ BOX3D* result) PURE;
  98.     STDMETHOD(Dehydrate) (THIS_ short level) PURE;
  99.     };
  100.  
  101.  
  102. /*****************************************************************************\
  103. *  I3DShSceneRender                                                           *
  104. *                                                                             *
  105. *    At this time, I3DShSceneRender is identical to I3DShObjectRender.        *
  106. *                                                                             *
  107. \*****************************************************************************/
  108.  
  109. #undef  INTERFACE
  110. #define INTERFACE   I3DShSceneRender
  111.  
  112. DECLARE_INTERFACE_(I3DShSceneRender, I3DShObjectRender) {
  113.     // IUnknown methods
  114.   STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  115.   STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  116.   STDMETHOD_(ULONG, Release) (THIS) PURE;
  117.  
  118.     // I3DShObjectRender methods
  119.     //-- Geometry calls
  120.     STDMETHOD_(BOOLEAN, IsPatchBased) (THIS) PURE;
  121.     STDMETHOD(EnumPatches) (THIS_ EnumPatchesCallback callback, void* privData) PURE;
  122.     STDMETHOD(EnumFacets) (THIS_ EnumFacetsCallback callback, void* privData, NUM3D fidelity) PURE;
  123.     STDMETHOD(PrimitiveModified) (THIS_ short how) PURE;
  124.     STDMETHOD_(I3DShEnumSubPrimitive*, GetSubPrimitivesEnum) (THIS) PURE;        // Get list of subprimitives
  125.     STDMETHOD(GetFlatness) (THIS_ NUM3D* flatness) PURE;
  126.     //-- Rendering calls
  127.     STDMETHOD(Draw) (THIS_ ZBInfo* zbInfo, ULONG uvSpaceID) PURE;        // Z-Buffer / Scanline
  128.     STDMETHOD(WireframeDraw) (THIS_ I3DShLineArt* aLineArt, TREETRANSFORM3D* treeTransform, I3DShCamera* camera, BOX2D* drawArea, short mode) PURE;        // Wireframe
  129.     STDMETHOD_(BOOLEAN, RayHit) (THIS_ Ray3D* ray, RayHitParams* params, RayHit3D* hit) PURE;
  130.     STDMETHOD(GetRayHitDetails) (THIS_ RayHit3D* hit, ULONG* uvSpaceID) PURE;
  131.     STDMETHOD(RayAllHits) (THIS_ Ray3D* ray, RayHitParams* params, RayHit3D* hit, RayHitCallback callback, void* privData) PURE;        // Optional - Return E_NOTIMPL if not implemented
  132.     //-- Utils.
  133.     STDMETHOD(GetBoxes) (THIS_ ZBInfo* zbInfo, NUM3D* resultMinZ, NUM3D* resultMaxZ, BOX3D_2* resultBox2D, BOX3D* resultBox3D) PURE;
  134.     STDMETHOD(GetBBox) (THIS_ BOX3D* result) PURE;
  135.     STDMETHOD(Dehydrate) (THIS_ short level) PURE;
  136.     };
  137.  
  138.  
  139.  
  140. #endif
  141.  
  142.